草庐IT

java - 实现类或导入类java

全部标签

Golang 导入周期挑战

我在我的go代码中遇到循环依赖(不允许导入循环)的问题,并且不确定解决它的最佳方法。我认为我对golang接口(interface)缺乏了解可能会影响我看清前进方向的能力。我的问题-我有两个包裹:Event-Event主要是“父项”,会多次调用锻炼包Workout-在一种情况下,我需要调用事件包,这会产生循环依赖,因为Event已经消耗了Workout允许Workout在事件域中调用函数(而不是对象上的方法)的最佳方法是什么?下面是我的简化代码,以帮助提供一些上下文//workoutpackage//Thisisaprivatefunctionontheworkoutpackageth

go - 填充作为参数给出的接口(interface)类型的一部分(例如,为数据库/sql 实现 ScanAll)

我们如何实现一个函数,该函数将返回SQL查询产生的所有行并将它们转换为dest这是一个接口(interface)数组(可能无法像Scan一样工作)?我假设目标数组必须作为函数的参数给出。但是,我仍然不知道我应该如何完成实现:funcGetAll(querystring,destinterface{})error{rows,err:=s.db.Query(query)iferr!=nil{returnerr}deferrows.Close()forrows.Next(){vardestRow???/*donothaveatype.usingreflect.TypeOf(dest).Ele

go - 通过导入父目录,使用 golang 导入子包?

我有这个main.go文件:packagemainimport"one/entities/bar"funcmain(){}我有这个目录结构:当我构建我的项目时:goinstallmain我得到这个编译错误:src/main/main.go:3:8:noGofilesin/home/oleg/codes/oresoftware/oredoc/test/builds/go/src/one/entities/bar这个错误是有道理的。有什么方法可以从one/entities/bar目录中导入所有子包吗?像这样:packagemainimportbar"one/entities/bar/*"f

google-app-engine - 如何使用 go 模块在 GAE SE Go 1.11 上导入私有(private)存储库?

我在github上有一个go库包仓库作为私有(private)仓库。我写了一个像下面这样的项目来导入上面的库包。packagemainimport"github.com/foo/libpackage"funcmain(){:}这是目录层次结构。path/to/project|-main.go|-go.mod`-go.sum部署时出现错误,无法解决go:github.com/foo/libpackage@v0.0.0-20181127123728-008fddddc190:gitfetch-foriginrefs/heads/*:refs/heads/*refs/tags/*:refs/

go - 当字段实现 UnmarshalJSON 时,Unmarshal 嵌入式字段指针会出现困惑

我有一个struct,它嵌入了一个指向另一个struct的嵌入式指针。当我使用默认的json.Unmarshal行为时,它工作得很好。但是当我为embeddedstruct的类型实现UnmarshalJSON而不是外部struct,然后使用空指针解引用进行panic。如果我也为外部struct类型实现UnmarshalJSON,那么它就可以工作。但是,外部结构有许多字段,我宁愿不必手动解码。为什么在一个而不是另一个上实现UnmarshalJSON会导致panic?有没有办法在不为外部类型实现UnmarshalJSON的情况下让它工作?如果没有,是否有更简单/更少手动的方法来为外部类型实

go - 如何实现 goroutines 的管道?

我需要一些帮助来了解如何使用管道将数据从一个goroutine传输到另一个goroutine。我读了golangblogpostonpipeline,我理解了但不能完全付诸行动,因此想到向社区寻求帮助。现在,我想出了这个丑陋的代码(Playground):packagemainimport("fmt""sync""time")funcmain(){wg:=sync.WaitGroup{}ch:=make(chanint)fora:=0;a问题我想使用管道或任何正确的方式来做这件事。此外,博文中显示的管道不适用于goroutines,因此我无法自己完成。在现实生活中,func1和func

go - 实例化具有不同函数签名的对象时函数实现的差异

在函数实现中遇到了以下差异。示例1返回指针和示例2返回实际对象背后的原因是什么?typeMyInterfaceinterface{Func(paramint)float64//justrandomsignature}//MyInterfaceImplimplementsMyInterfacetypeMyInterfaceImplstruct{}//actualimplementationfunc(myObj*MyInterfaceImpl)Func(paramint)float64{returnfloat64(param)}例1:函数返回接口(interface)时返回指向MyInte

go - 使用 xml.NewDecoder(xmlFile) 在 Go/Golang 中解析大型 XML 文件时如何实现进度计数器?

我按照本网站上的示例编写了一些代码来解析大型XML文件(>3GB):https://blog.singleton.io/posts/2012-06-19-parsing-huge-xml-files-with-go/想法是创建decoder:=xml.NewDecoder(xmlFile),然后用decoder.Token()遍历文件,同时检查所有xml.StartElement。只要找到正确的元素,就会使用decoder.DecodeElement()对其进行解码。一切都很好。我现在喜欢的是一种向用户显示进度的方法。类似于“x%的文件已处理”。我知道如何获取XML的文件大小:Howt

go - 从包导入路径获取包源的完整路径

目前我有一个类似str:="github.com/pkg/errors"的参数。我需要包的完整路径。目前我是通过使用build.Default.GOPATH+"/src/"+str来实现这一点的。是否有一种原生的非hacky方法来解析导入的完整路径(可以在vendor文件夹等中...)。 最佳答案 使用go/build用于解析目录导入路径的包:p,err:=build.Default.Import("github.com/pkg/errors",".",build.FindOnly)iferr!=nil{//handleerror}

go - 实现并发的失败尝试

我很难让go并发正常工作。我正在处理从XML数据源加载的数据。将数据加载到内存后,我循环遍历XML元素并执行操作。加并发前的代码已经过测试,可以正常使用,我认为不会对加并发有任何影响。我有2次失败的并发实现尝试,两次都具有不同的输出。我使用锁定是因为我不想进入竞争状态。对于这个实现,它永远不会进入goroutine。varmusync.Mutex//lengthis197Kfori:=0;i对于此使用waitGroups的实现,发生运行时内存不足varmusync.Mutexvarwgsync.WaitGroup//lengthis197Kfori:=0;i我不太确定发生了什么,需要一